package com.jsejtman.gastos.service.impl;

import com.jsejtman.gastos.persistence.entity.Gasto;
import com.jsejtman.gastos.persistence.entity.Usuario;
import com.jsejtman.gastos.service.exception.ServiceException;

/**
 * Interfaz con todas las operaciones aplicables a una entidad de datos Entity.
 * 
 * @author jsejtman
 */
public interface IGastoService {

	/**
	 * Obtiene una entidad de datos gasto a través de su identificador.
	 * 
	 * @param id Identificador de la entidad.
	 * @return Entidad de datos Usuario hallada.
	 * @throws ServiceException En caso de problemas.
	 */
	Gasto getGastoById(final Long id) throws ServiceException;

	/**
	 * Graba o actualiza el gasto pasado.
	 * 
	 * @param gasto el gasto a grabar.
	 * @throws ServiceException en caso de problemas
	 */
	void saveGasto(final Gasto gasto) throws ServiceException;

	/**
	 * Borra un gasto.
	 * 
	 * @param gasto el gasto a borrar
	 * @throws ServiceException si ocurre un error.
	 */
	void deleteGasto(final Gasto gasto) throws ServiceException;

}
